package com.bank.common.dao.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * @author Fu Zhaohui
 * @version 1.0.0
 * @date 2019/6/14 6:15
 */
public interface BaseMapper<T, S> {

    /**
     * 插入记录
     *
     * @param record
     * @return
     */
    int insert(T record);

    /**
     * 批量插入记录
     *
     * @param records
     */
    int batchInsert(List<T> records);

    /**
     * 更新记录
     *
     * @param record
     * @return
     */
    int update(T record);

    /**
     * 批量更新
     *
     * @param records
     * @return
     */
    int batchUpdate(List<T> records);

    /**
     * 主键查询记录
     *
     * @param id
     * @return
     */
    T findByPk(String id);

    /**
     * 主键批量查询记录
     *
     * @param ids
     * @return
     */
    List<T> findByPks(List<String> ids);

    /**
     * 删除记录
     *
     * @param id
     */
    int delete(String id);

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    int batchDelete(List<String> ids);

    /**
     * 分页查询记录
     *
     * @param params
     * @param offset
     * @param limit
     * @return
     */
    List<T> findByPage(@Param("params") S params, @Param("offset") Long offset, @Param("limit") Integer limit);

    /**
     * 管理后台商品列表
     * @param params
     * @param offset
     * @param limit
     * @return
     */
    List<T> findConByPage(@Param("params") S params, @Param("offset") Long offset, @Param("limit") Integer limit);


    /**
     * 统计
     *
     * @param params
     * @return
     */
    Long count(@Param("params") S params);
    Long conCount(@Param("params") S params);

    /**
     * 查询所有
     *
     * @param params
     * @return
     */
    List<T> findAll(@Param("params") S params);




}
